import env from "@/config.js"
import {useUserStore} from "@/hooks/useUserStore";

/**
 * 请求拦截
 * @param {Object} http
 */
export const requestInterceptors = (vm) => {
    uni.$uv.http.interceptors.request.use((config) => { // 可使用async await 做异步操作
        const {token} = useUserStore()
        // 'NoToken' url 自动适配
        if (config.custom?.autoFitNoToken && (!token.value || config.custom?.withoutToken)) {
            config.url = config.url + 'NoToken'
        }
        // 初始化请求拦截器时，会执行此方法，此时data为undefined，赋予默认{}
        config.data = config.data || {}
        config.header = config.header || {}
        // 补充header信息
        config.header['X-Requested-With'] = 'XMLHttpRequest';
        config.header['type'] = env.identifier
        // 可以在此通过vm引用vuex中的变量，具体值在store.state中
        if (!config.custom?.withoutToken && token.value) {
            config.header['Authorization'] = `Bearer ${token.value}`
        }
        return config
    }, (config) => // 可使用async await 做异步操作
        Promise.reject(config))
}
